package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

func checkError(e error) {
}

type User struct {
	Id       int    `json:"id"`
	Username string `json:"username"`
	Password string `json:"password"`
}

func Search(db *sql.DB) {
	var u User
	// 查询数据，返回sq.Rows结果集
	rows, err := db.Query("select username,password from user where username=\"admin\"")
	defer rows.Close()
	checkError(err)

	// 迭代查询数据
	for rows.Next() {
		// 读取每一行的值
		rows.Scan(&u.Username, &u.Password)
		fmt.Println(u)
	}
	// 查询一行数据
	row := db.QueryRow("select username,password from user where id=1")
	defer rows.Close()

	// 读取一行数据
	row.Scan(&u.Username, &u.Password)
	fmt.Println(u)
}

func Insert(db *sql.DB) {
	// 插入一行数据
	ret, err := db.Exec("insert into user(username,password) values('test','123123')")
	checkError(err)

	// 返回插入的ID
	insID, err := ret.LastInsertId()
	checkError(err)

	fmt.Println(insID)
}

func Update(db *sql.DB) {
	// 更新数据，修改id=4的行的username
	ret, err := db.Exec("update user set username='test1' where id=? ", 4)
	checkError(err)

	// 获取受影响行数
	aff_nums, err := ret.RowsAffected()
	checkError(err)

	fmt.Println(aff_nums)
}

func Delete(db *sql.DB) {
	ret, err := db.Exec("delete from user where id = ?", 3)
	checkError(err)

	delNums, err := ret.RowsAffected()
	checkError(err)

	fmt.Println(delNums)
}

func main() {
	// 打开数据库,需引入mysql驱动
	db, err := sql.Open("mysql", "root:123123@tcp(127.0.0.1:3306)/test")
	checkError(err)

	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	} else {
		log.Println("数据库连接成功")
	}

	// 关闭数据库
	defer db.Close()

	// Search(db)

	// Insert(db)

	// Update(db)

	// Delete(db)

}
